package com.iot.practice.designpattern.state.nopattern1;

/**
 * <p>NoStateClient 此类用于：</p>
 * <p>@author：hujm</p>
 * <p>@date：2021年03月19日 11:36</p>
 * <p>@remark：
 * 太简单的程序了，是个程序员都会写这个程序，这么简单的程序还拿出来 show，是不是太小看我们的智商了？！
 * 非也，非也，我们继续往下分析，这个程序有什么问题，你想呀电梯门可以打开，但不是随时都可以开，是有前提条件的的，
 * 你不可能电梯在运行的时候突然开门吧？！电梯也不会出现停止了但是不开门的情况吧？！那要是有也是事故嘛，再仔细想想，
 * 电梯的这四个动作的执行都是有前置条件，具体点说说在特定状态下才能做特定事，那我们来分析一下电梯有什么那些特定状态：
 *  （1）门敞状态---按了电梯上下按钮，电梯门开，这中间有 5 秒的时间（当然你也可以用身体挡住电梯门，那就不是 5 秒了），那就是门敞状态；在这个状态下电梯只能做的动作是关门动作，做别的动作？那就危险喽
 *  （2）门闭状态---电梯门关闭了，在这个状态下，可以进行的动作是：开门（我不想坐电梯了）、停止（忘记按路层号了）、运行
 *  （3）运行状态---电梯正在跑，上下窜，在这个状态下，电梯只能做的是停止；
 *  （4）停止状态---电梯停止不动，在这个状态下，电梯有两个可选动作：继续运行和开门动作；
 * </p>
 */
public class NoStatePatternClient1 {

    public static void main(String[] args) {
        ILift lift = new Lift();

        // 首先是电梯门开启，人进去
        lift.open();

        // 然后电梯门关闭
        lift.close();

        // 再然后，电梯跑起来，向上或者向下
        lift.run();

        // 最后到达目的地，电梯停下来
        lift.stop();
    }
}
